打开EOF
检测,此选项将检测客户端连接发来的数据,当数据包结尾是指定的字符串时才会投递给Worker
进程。否则会一直拼接数据包,直到超过缓存区或者超时才会中止。当出错时底层会认为是恶意连接,丢弃数据并强制关闭连接。
- 布尔型,必须为
true
或false
,传入其他类型数值会被强制转为布尔型
此配置仅对
STREAM
类型的Socket
有效,如TCP
、Unix Socket Stream
array(
'open_eof_check' => true, //打开EOF检测
'package_eof' => "\r\n", //设置EOF
)
常见的Memcache/SMTP/POP
等协议都是以\r\n
结束的,就可以使用此配置。开启后可以保证Worker进程一次性总是收到一个或者多个完整的数据包。
EOF
检测不会从数据中间查找eof
字符串,所以Worker
进程可能会同时收到多个数据包,需要在应用层代码中自行explode("\r\n", $data)
来拆分数据包
1.7.15
版本增加了open_eof_split
配置项,支持从数据中查找EOF
,并切分数据